package com.haiqiu.system.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * sys_permission
 *
 * @author haiqiu
 */
@ApiModel(value = "菜单权限")
@Data
public class SysPermission implements Serializable {
    /**
     * 主键ID
     */
    @ApiModelProperty(value = "主键ID")
    private Long id;

    /**
     * 父级ID
     */
    @ApiModelProperty(value = "父级ID")
    private Long parentId;

    /**
     * 权限名称（菜单名称）
     */
    @ApiModelProperty(value = "权限名称（菜单名称）")
    @NotEmpty(message = "菜单名称不能为空")
    private String title;

    /**
     * 权限值
     */
    @ApiModelProperty(value = "权限值")
    @NotEmpty(message = "权限字符不能为空")
    private String value;

    /**
     * 权限图标
     */
    @ApiModelProperty(value = "权限图标")
    @NotEmpty(message = "图标不能为空")
    private String icon;

    /**
     * 权限链接
     */
    @ApiModelProperty(value = "路由地址")
    @NotEmpty(message = "路由地址不能为空")
    private String path;

    /**
     * 是否开启（true激活，false禁用）
     */
    @ApiModelProperty(value = "是否开启（true激活，false禁用）")
    @NotNull(message = "激活状态不能为空")
    private Boolean active;

    /**
     * 权限描述
     */
    @ApiModelProperty(value = "权限描述")
    @NotEmpty(message = "权限描述不能为空")
    private String desc;

    /**
     * 请求方法
     */
    @ApiModelProperty(value = "请求方法")
    @NotEmpty(message = "请求方法不能为空")
    private String method;

    /**
     * 类型：0目录。1菜单，2按钮
     */
    @ApiModelProperty(value = "类型：0目录。1菜单，2按钮")
    @NotNull(message = "类型不能为空")
    private Byte type;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @NotNull(message = "排序不能为空")
    private Short sort;

    /**
     * 路由组件
     */
    @ApiModelProperty(value = "路由组件")
    @NotEmpty(message = "路由组件不能为空")
    private String component;

    /**
     * 是否为外链（true是 false否）
     */
    @ApiModelProperty(value = "是否为外链（true是 false否）")
    @NotNull(message = "是否为外链不能为空")
    private Boolean isFrame;

    /**
     * 是否缓存（true缓存 false不缓存）
     */
    @ApiModelProperty(value = "是否缓存（true缓存 false不缓存）")
    @NotNull(message = "是否缓存不能为空")
    private Boolean isCache;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", hidden = true)
    private Date createTime;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间", hidden = true)
    private Date updateTime;

    private static final long serialVersionUID = 1L;

}